home *** CD-ROM | disk | FTP | other *** search
- // ApiHook.h - constants and structures for ApiHooks
-
- #define HOOK_EXPORT 0001
- #define HOOK_IMPORT 0002
- #define HOOK_BY_ADDRESS 0004
- #define HOOK_HARD 0008
- #define HOOK_NO_UNBIND 0016
-
- #define HOOK_EXACT HOOK_EXPORT | HOOK_IMPORT
- #define HOOK_ALL HOOK_EXPORT | HOOK_BY_ADDRESS
-
- #ifdef UNICODE
- #define HOOKS_END (LPCWSTR)-1
- #define HOOKS_DYNAMIC (LPCWSTR)-2
- #define ALL_MODULES (LPCWSTR)-1
- #else
- #define HOOKS_END (LPCSTR)-1
- #define HOOKS_DYNAMIC (LPCSTR)-2
- #define ALL_MODULES (LPCSTR)-1
- #endif
-
- typedef struct _ADDR_CONTENTS {
- DWORD *ReturnWhere;
- DWORD ReturnWhat;
- } ADDR_CONTENTS, *PADDR_CONTENTS;
-
- typedef struct _API_UNHOOK {
- DWORD MaxNoAddr;
- DWORD CurNoAddr;
- PADDR_CONTENTS WhereWhat;
- } API_UNHOOK, *PAPI_UNHOOK;
-
- typedef struct _API_HOOK {
- LPCSTR ModuleExport;
- LPCSTR ApiNameOrOrd;
- DWORD dwFlags;
- LPCSTR ModuleImport;
- PAPI_UNHOOK UnhookAddresses;
- LPVOID HookAddress;
- } API_HOOK, *PAPI_HOOK;
-
-
- __declspec(dllimport) DWORD __stdcall EstablishApiHooksA(LPCSTR lpszDll, DWORD ProcessId);
- __declspec(dllimport) DWORD __stdcall EstablishApiHooksW(LPCWSTR lpszDll, DWORD ProcessId);
- __declspec(dllimport) DWORD __stdcall EstablishApiHooksTimeA(LPCSTR lpszDll, DWORD ProcessId, LONG dwMilliseconds);
- __declspec(dllimport) DWORD __stdcall EstablishApiHooksTimeW(LPCWSTR lpszDll, DWORD ProcessId, LONG dwMilliseconds);
- __declspec(dllimport) DWORD __stdcall EstablishApiHooksTimeNTA(LPCSTR lpszDll, DWORD ProcessId, LONG dwMilliseconds);
- __declspec(dllimport) DWORD __stdcall EstablishApiHooksTimeNTW(LPCWSTR lpszDll, DWORD ProcessId, LONG dwMilliseconds);
- __declspec(dllimport) DWORD __stdcall RemoteExecuteTime(DWORD ProcessId, LONG dwMilliseconds, LPVOID lpBlock, DWORD BlockSize, LPVOID lpCodeEnd);
- __declspec(dllimport) DWORD __stdcall RemoteExecuteTimeNT(DWORD ProcessId, LONG dwMilliseconds, LPVOID lpBlock, DWORD BlockSize, LPVOID lpCodeEnd);
- __declspec(dllimport) DWORD __stdcall IsModuleLoadedA(LPCSTR lpszDll, DWORD ProcessId);
- __declspec(dllimport) DWORD __stdcall IsModuleLoadedW(LPCWSTR lpszDll, DWORD ProcessId);
- __declspec(dllimport) DWORD __stdcall LoadAndCallA(LPCSTR lpszDll, DWORD ProcessId, DWORD HowManyTimes, LPCSTR ApiNameOrOrd);
- __declspec(dllimport) DWORD __stdcall LoadAndCallW(LPCWSTR lpszDll, DWORD ProcessId, DWORD HowManyTimes, LPCWSTR ApiNameOrOrd);
- __declspec(dllimport) DWORD __stdcall UnloadModuleA(LPCSTR lpszDll, DWORD ProcessId, DWORD HowManyTimes);
- __declspec(dllimport) DWORD __stdcall UnloadModuleW(LPCWSTR lpszDll, DWORD ProcessId, DWORD HowManyTimes);
- __declspec(dllimport) DWORD __stdcall HookApiA(LPCSTR ModuleExport, LPCSTR ApiNameOrOrd, DWORD dwFlags, LPCSTR ModuleImport, PAPI_UNHOOK ApiUnhook, LPVOID HookAddress, HANDLE ExcludeModules[]);
- __declspec(dllimport) DWORD __stdcall HookApiW(LPCWSTR ModuleExport, LPCWSTR ApiNameOrOrd, DWORD dwFlags, LPCWSTR ModuleImport, PAPI_UNHOOK ApiUnhook, LPVOID HookAddress, HANDLE ExcludeModules[]);
-
- #ifdef UNICODE
- #define EstablishApiHooks EstablishApiHooksW
- #define EstablishApiHooksTime EstablishApiHooksTimeW
- #define EstablishApiHooksTimeNT EstablishApiHooksTimeNTW
- #define IsModuleLoaded IsModuleLoadedW
- #define LoadAndCall LoadAndCallW
- #define UnloadModule UnloadModuleW
- #define HookApi HookApiW
- #else
- #define EstablishApiHooks EstablishApiHooksA
- #define EstablishApiHooksTime EstablishApiHooksTimeA
- #define EstablishApiHooksTimeNT EstablishApiHooksTimeNTA
- #define IsModuleLoaded IsModuleLoadedA
- #define LoadAndCall LoadAndCallA
- #define UnloadModule UnloadModuleA
- #define HookApi HookApiA
- #endif
-
- #define ErrorSuccess 0
- #define ErrorException 1
- #define ErrorOpenProcess 2
- #define ErrorRemoteAlloc 3
- #define ErrorRemoteExec 4
- #define ErrorRemoteFree 5
- #define ErrorTimeOut 9